#include"carStop.h"
#include<iostream>

// size_t partiton(int *array,size_t start, size_t end)
// {
//     size_t left=start;
//     size_t right=end;
//     int temp =array[start];
//     while(left<right){
//         while(array[right]>temp&&left<right)
//             right--;
//         if(left<right){
//             array[left++]=array[right];
//         }
//         while(temp>array[left]&&left<right)
//             left++;
//             if(left<right)
//             array[right--]=array[left];
//     }
//     array[left]=temp;
//     return left;
// }

// //借助栈实现非递归的快速排序
// void fastNoRecur(int *a,size_t start,size_t end){
//     linkStack  s;//存放区间的栈
//     s.push((void*)start);
//     s.push((void*)end);

//     while(s.isEmpty()==false){//栈不为空，还有区间需要排序
//         //取区间
//         size_t right=(size_t)*s.getTop();
//         s.pop();
//         size_t left=(size_t)*s.getTop();
//         s.pop();
//         size_t mid=partiton(a,left,right);//把区间传给分组排序
//         if(mid !=0&&left<mid-1){
//             //左区间入栈
//             s.push((void*)left);
//             s.push((void*)(mid-1));
//         }
//         if(mid+1<right){
//             //右区间入栈
//             s.push((void*)(mid+1));
//             s.push((void*)right);
//         }
//     }
// }


//两个栈实现一个队列
// class MyQueue
// {
// public:
//     using elemenType=linkStack::elementType;
//     void Push(const elemenType& element)
//     {
//         while(s2.isEmpty()==false)//两个栈不能同时有数据
//         { 
//             s1.push(*s2.getTop());
//             s2.pop();
//         }
//         s1.push(element);
//     }

//     void Pop()
//     {
//         while(s1.isEmpty()==false)
//         {
//             s2.push(*s1.getTop());
//             s1.pop();
//         }
//         s2.pop();

//     }

//     elemenType *Getfront()
//     {
//         while(s1.isEmpty()==false)
//         {
//             s2.push(*s2.getTop());
//             s1.pop();
//         }
//        return s2.getTop();


//     }
//     bool IsEmpty()
//     {
//         return s1.isEmpty()&& s2.isEmpty();
//     }



// private:
//     linkStack s1;
//     linkStack s2;

// };
// //两个队列实现一个栈
// class Mystack
// {
// public:
//     using elemenType=linkStack::elementType;
//     void Push(const elemenType& element)
//     {
//         while(q2.isEmpty()==false)
//         {
//            q1.push(*q2.getFront());
//            q2.pop();
//         }
//         q1.push(element);
//     }

//     void Pop()
//     {
//         while(q1.Size()>1)
//         {
//             q2.push(*q1.getFront());
//             q1.pop();
//         }
//         q1.pop();
//     }


//     elemenType *Getfront()
//     {
//         while(q1.Size()>1)
//         {
//             q2.push(*q1.getFront());
//             q1.pop();
//         }
//         long r=(long)*q1.getFront();
//         q2.push(*q1.getFront());
//          while(q2.isEmpty()==false)
//         {
//            q1.push(*q2.getFront());
//            q2.pop();
//         }
//         return (elemenType*) r;

       


//     }
//     bool IsEmpty()
//     {
//         return q1.isEmpty()&& q2.isEmpty();
//     }



// private:
//     linkQueen q1;
//     linkQueen q2;


// };

int main()
{
    carStop s(3);
    while(1)
    {
        s.show();
        std::cout<<"1、车辆进入停车场\n";
        std::cout<<"2、车辆离开停车场\n";
        std::cout<<"3、退出\n";
        int choice=0;
        std::cin>>choice;
        switch(choice)
        {
            case 1:s.comeCar();break;
            case 2:s.leaveCar();break;
            default:
                    break;
        }
}

return 0;

    // MyQueue q;
    // for(long i=1;i<=10;i++)
    //     q.Push((void*)i);
    // while(q.IsEmpty()==false)
    // {
    //     std::cout<<(long)*q.Getfront()<<" ";
    //     q.Pop();
    // }
    // std::cout<<std::endl;
    // return 0;
}